﻿#pragma once
#include "Transform.h"

/**
变换矩阵对象
*/
class Matrix
{
public:
	Matrix();

	/** 设置视图大小(正交矩阵) */
	void setViewSize(int width, int height);

	/** type：0 正交矩阵 1 透视矩阵 */
	void setType(int type);

	/** 设置缩放比例 */
	void setScale(float sx, float sy, float sz = 1.f);

	/** 设置旋转角度 */
	void setRotate(float angle, float x = 0, float y = 0, float z = 1.f);

	/** 位移 */
	void setMove(float x, float y, float z);

	/** 获取计算结果 */
	const ESMatrix& getMatrix();

	/** 矩阵是否进行了变更 */
	bool isChange();

private:
	/** 矩阵是否进行了变更 */
	bool _isChange;

	int _width;
	int _height;
	int _type;

	/** 计算结果 */
	ESMatrix _resultMatrix;

	/** 视图 */
	ESMatrix _viewMatrix;

	/** 缩放 */
	ESMatrix _scaleMatrix;

	/** 旋转 */
	ESMatrix _rotateMatrix;

	/** 位移 */
	ESMatrix _moveMatrix;
};
